//============================================================================================
/**
 * @file	pst_sub.c
 * @brief	ポケモンステータス画面　下画面のボタン処理
 * @author	Hiroyuki Nakamura
 * @date	2006.03.03
 */
//============================================================================================
#include "common.h"
#include "gflib/touchpanel.h"
#include "system/procsys.h"
#include "system/clact_tool.h"
#include "system/msgdata.h"
#include "system/numfont.h"
#include "system/wordset.h"
#include "poketool/pokeparty.h"

#define	PST_SUB_H_GLOBAL
#include "application/p_status.h"
#include "pst_sys.h"
#include "pst_obj.h"
#include "pst_sub.h"
#include "pst_snd_def.h"


//============================================================================================
//	定数定義
//============================================================================================
#define	PST_SUB_OFF		( 0x0f )	// 下ボタン表示なし

//============================================================================================
//	プロトタイプ宣言
//============================================================================================
static void SubPokeButtonBgInit( PST_WORK * wk );
static int SubPokeButtonCheck( PST_WORK * wk );


//============================================================================================
//	グローバル変数
//============================================================================================
typedef struct {
	u8	page;		// ページID
	u8	pal;		// パレット
	u8	px;			// 表示座標X
	u8	py;			// 表示座標Y
}PST_SUB_BUTTON;

// 通常のボタンデータ
static const PST_SUB_BUTTON SubButtonType1[] =
{
	{ PST_PAGE_INFO_MEMO, 1, 1, 4 },
	{ PST_PAGE_PARAM_B_SKILL, 2, 5, 15 },
	{ PST_PAGE_RIBBON, 4, 25, 10 },
	{ PST_PAGE_RET, 4, 26, 4 },
	{ PST_POKE1,0,0,0, },
	{ PST_POKE2,0,0,0, },
	{ PST_POKE3,0,0,0, },
	{ PST_POKE4,0,0,0, },
	{ PST_POKE5,0,0,0, },
	{ PST_POKE6,0,0,0, },
	{ 0xff, 0xff, 0xff, 0xff }
};

// 通常のタッチ判定
static const RECT_HIT_TBL SubButtonRect1[] =
{
	{  165,	 191,	  2,   45 },	// 情報タブ
	{  165,	 191,	 48,   96 },	// わざタブ
	{  165,	 191,	 99,  140 },	// リボンタブ

	{ 165,	 191,	189,  250 },	// もどる

	{  38,	  66,	165,  203 },	// ポケモン１
	{  46,	  74,	205,  243 },	// ポケモン２
	{  70,	  98,	165,  203 },	// ポケモン３
	{  78,	 106,	205,  243 },	// ポケモン４
	{ 102,	 130,	165,  203 },	// ポケモン５
	{ 110,	 138,	205,  243 },	// ポケモン６
	{ RECT_HIT_END, 0, 0, 0 }
};

#define	BUTTON_CGX_SIZE		( 5 )		// 一辺のボタンサイズ
#define	BUTTON_CGX_WIDE		( 30 )		// グラフィックファイルのX幅

#define	BUTTON_CGX_XNEXT	( 15 )									// 次のボタンへのキャラサイズX
#define	BUTTON_CGX_YNEXT	( BUTTON_CGX_WIDE * BUTTON_CGX_SIZE )	// 次のボタンへのキャラサイズY


//--------------------------------------------------------------------------------------------
/**
 * タッチパネルのボタン押し判定
 *
 * @param	wk		ワーク
 *
 * @retval	"RECT_HIT_NONE = 押されていない"
 * @retval	"RECT_HIT_NONE != 押したボタン番号"
 */
//--------------------------------------------------------------------------------------------
static int SubPokeButtonCheck( PST_WORK * wk )
{
	int	ret;

	if( wk->sub_type == PST_SUB_OFF ){
		return RECT_HIT_NONE;
	}

	// PP or POKEPARTY
	if( wk->dat->ppt != PST_PP_TYPE_POKEPASO ){
		ret = GF_TP_RectHitTrg( SubButtonRect1 );
		if( ret != RECT_HIT_NONE ){
			return SubButtonType1[ret].page;
		}
		return ret;
	}

	// PPP
	ret = GF_TP_RectHitTrg( SubButtonRect1 );
	// １体表示時はポケモンアイコンを選択無効にする
	if( ret >= PST_POKE1 && ret <= PST_POKE6 ){
		return RECT_HIT_NONE;
	}
	if( ret != RECT_HIT_NONE ){
		return SubButtonType1[ret].page;
	}
	return ret;
}

//--------------------------------------------------------------------------------------------
/**
 * 押されたボタン取得
 *
 * @param	wk		ステータス画面のワーク
 *
 * @retval	"0xff = 押されていない"
 * @retval	"0xff != 押したボタン番号"
 */
//--------------------------------------------------------------------------------------------
u8 PokeStatus_SubBottonPageGet( PST_WORK * wk )
{
	const PST_SUB_BUTTON * tbl;
	int	ret;

	ret = SubPokeButtonCheck( wk );

	if( ret != RECT_HIT_NONE ){
		return ret;
	}
	return 0xff;
}


